<?php
/**
// 获取来自前端的GET请求参数 'url'
$url = isset($_GET['url']) ? $_GET['url'] : '';

// 检查 URL 是否被设置
if (empty($url)) {
  die('URL 参数未提供');
}

// 初始化 cURL 会话
$ch = curl_init($url);

// 设置 cURL 选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将 curl_exec() 获取的信息以文件流的形式返回，而不是直接输出。
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); // 在传输二进制数据时将其返回为原样。
curl_setopt($ch, CURLOPT_HEADER, false); // 不包含头部信息。

// 执行 cURL 会话并获取响应数据
$response = curl_exec($ch);

// 检查 cURL 错误
if (curl_errno($ch)) {
  echo 'cURL 错误: ' . curl_error($ch);
  curl_close($ch);
  exit;
}

// 关闭 cURL 会话
curl_close($ch);

// 将二进制数据转换为 Base64 编码的字符串
$base64Data = base64_encode($response);

// 设置 MIME 类型（例如 MP3 文件）
$mimeType = 'audio/mpeg';

// 构造 Base64 编码的字符串（带有 MIME 类型）
$base64 = "data:{$mimeType};base64,{$base64Data}";

// 输出或返回 Base64 编码的字符串
echo $base64;
 */




/** 
function fetchMp3AsBase64($url)
{
  // 初始化cURL会话
  $ch = curl_init();

  // 设置cURL选项
  curl_setopt($ch, CURLOPT_URL, $url); // 设置请求的URL
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将结果返回为字符串，而不是直接输出
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 允许cURL跟随重定向
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // 设置最大重定向次数（可以根据需要调整）
  curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); // 以二进制模式传输数据

  // 执行cURL请求并获取响应
  $response = curl_exec($ch);

  // 检查是否有错误发生
  if (curl_errno($ch)) {
    $error_msg = curl_error($ch);
    curl_close($ch);
    throw new Exception("cURL Error: " . $error_msg);
  }

  // 获取HTTP状态码
  $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

  // 关闭cURL会话
  curl_close($ch);

  // 检查HTTP状态码是否表示成功
  if ($http_code !== 200 && $http_code !== 206) { // 206 是部分内容（例如，视频流）
    throw new Exception("HTTP Error: " . $http_code);
  }

  // 将响应内容转换为Base64编码
  //$base64_encoded = base64_encode($response);

  return $http_code;
}

try {
  //$mp3Url = "http://example.com/path/to/mp3"; // 替换为实际的MP3 URL
  // 获取来自前端的GET请求参数 'url'
  $mp3Url = isset($_GET['url']) ? $_GET['url'] : '';
  $base64Mp3 = fetchMp3AsBase64($mp3Url);
  echo $base64Mp3;
} catch (Exception $e) {
  echo "Error: " . $e->getMessage();
}
 */


$mp3Url = isset($_GET['url']) ? $_GET['url'] : '';// 初始化cURL会话
$ch = curl_init();
// 设置要请求的URL
curl_setopt($ch, CURLOPT_URL, $mp3Url);
// 设置cURL选项以返回响应头
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true); // 如果只需要头部信息，可以设置此选项为true
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 执行cURL会话
$response = curl_exec($ch);
// 获取响应头信息
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
echo $header;
// 解析响应头，找到Location字段
if (preg_match('/^Location:\s*(.+)$/im', $header, $matches)) {
    $location = trim($matches[1]);
    echo "Location: " . $location;
} else {
    echo "Location header not found.";
}
curl_close($ch);
?>